<?php
include_once('include/Config.php');
include_once('entities/ClienteTarjeta.php');

Class ClienteTarjetaDAL {

    private $link;
    
    public $result;
    public $errorDesc;


    public function __construct() {
        $this->conectar();
    }

    private function conectar() {
        
        //Tomado del config.php 
        $this->link = $GLOBALS["DBConnPDO"];
        
    }

    public function obtenerClienteTarjeta() {
        $sql = "select concat(c.nombre,' ' ,c.Apellido)as nomapel,ct.NumeroTarjeta,ct.CodVerificacion,ct.VencimientoTarjeta,ct.isActivo,ct.isBorrado from clientetarjeta ct inner join cliente c on ct.idCliente = c.idCliente";
        $listaClienteTarjeta = array();

        foreach ($this->link->query($sql) as $row) {

            $clienteTarjeta = new ClienteTarjeta();

            $clienteTarjeta->setIdCliente($row['nomapel']);
            $clienteTarjeta->setNumeroTarjeta($row['NumeroTarjeta']);
            $clienteTarjeta->setCodVerificacion($row['CodVerificacion']);
            $clienteTarjeta->setVencimientoTarjeta($row['VencimientoTarjeta']);
            $clienteTarjeta->setIsActivo($row['isActivo']);
            $clienteTarjeta->setIsBorrado($row['isBorrado']);

            $listaClienteTarjeta [] = $clienteTarjeta;
        }
        return $listaClienteTarjeta;
    }

    public function modificarClienteTarjeta($tar) {

        try {

            $sql = "UPDATE clientetarjeta SET ";
            $sql .= "NumeroTarjeta = :NumeroTarjeta  ";
            $sql .= ",VencimientoTarjeta = :VencimientoTarjeta ";
            $sql .= "where idClienteTarjeta = :idCliente ";

            $stmt = $this->link->prepare($sql);
            $idCliente = $tar->getIdClienteTarjeta();
            $NumeroTarjeta = $tar->getNumeroTarjeta();
            $CodVerificacion = $tar->getCodVerificacion();
            $VencimientoTarjeta = $tar->getVencimientoTarjeta();

            $stmt->bindParam(':idCliente', $idCliente, PDO::PARAM_INT);
            $stmt->bindParam(':NumeroTarjeta', $NumeroTarjeta, PDO::PARAM_STR);
            $stmt->bindParam(':VencimientoTarjeta', $VencimientoTarjeta, PDO::PARAM_STR);
            $stmt->execute();
            
            $stmt->closeCursor();
            
            $this->result = 0;
            $this->errorDesc = "";
            return 1;
            
        } catch (PDOException $e) {
            $this->result = -1;
            $this->errorDesc = $e->getMessage();
            return $this->result;
        }
    }

    public function insertClienteTarjeta($cli) {

        try {
            $sql = "INSERT INTO clientetarjeta( ";
            $sql .= "idCliente ";
            $sql .= ",idTipoTarjeta ";
            $sql .= ",NumeroTarjeta ";
            $sql .= ",CodVerificacion ";
            $sql .= ",VencimientoTarjeta ";
            $sql .= ",isActivo ";
            $sql .= ",isBorrado ";
            $sql .= ") VALUES ( ";
            $sql .= ":idCliente ";
            $sql .= ",:idTipoTarjeta ";
            $sql .= ",:NumeroTarjeta ";
            $sql .= ",'XXXX' ";
            $sql .= ",:VencimientoTarjeta ";
            $sql .= ",:isActivo ";
            $sql .= ",:isBorrado) ";

            $stmt = $this->link->prepare($sql);
            $idCliente = $cli->getIdCliente();
            $tipoTarjeta = $cli->getTipoTarjeta();
            $numeroTarjeta = $cli->getNumeroTarjeta();
            $vencimiento = $cli->getVencimientoTarjeta();
            $isActivo = TRUE;
            $isBorrado = FALSE;
            
            $stmt->bindParam(':idCliente', $idCliente, PDO::PARAM_INT);
            $stmt->bindParam(':idTipoTarjeta', $tipoTarjeta, PDO::PARAM_INT);
            $stmt->bindParam(':NumeroTarjeta', $numeroTarjeta, PDO::PARAM_STR);            
            $stmt->bindParam(':VencimientoTarjeta', $vencimiento, PDO::PARAM_STR);
            $stmt->bindParam(':isActivo', $isActivo, PDO::PARAM_BOOL);
            $stmt->bindParam(':isBorrado', $isBorrado, PDO::PARAM_BOOL);
            
            $stmt->execute();
            
            $this->result = 0;
            $this->errorDesc = "";
            return $this->link->lastInsertId();
            
        } catch (PDOException $e) {
            $this->result = -1;
            $this->errorDesc = $e->getMessage();
            return $this->result;
        }
    }

}

?>
